import create from 'zustand';
import { ActionDataStore, actionStore } from './actionStore';
import { ContractDataStore, contractStore } from './contractStore';
import { eventDataStore, EventDataStore } from './eventDataStore';
import { OutputStore, outputStore } from './outputStore';
import { IdeServerStore, serverStore } from './serverStore';
import { IdeSettingStore, settingStore } from './settingStore';
import { WorldStateStore, worldStateStore } from './worldStateStore';
import { LintStore, lintStore } from './lintStore';

export type AppStore =
  ActionDataStore &
  ContractDataStore &
  EventDataStore &
  OutputStore &
  IdeServerStore &
  IdeSettingStore &
  LintStore&
  WorldStateStore;

const useAppStore = create<AppStore>((...param) => ({
  ...actionStore(...param),
  ...contractStore(...param),
  ...eventDataStore(...param),
  ...outputStore(...param),
  ...serverStore(...param),
  ...settingStore(...param),
  ...worldStateStore(...param),
  ...lintStore(...param)
}));
export default useAppStore;
